/*----- Podprogram drukowania tekstu T6 z pamięci operacyjnej */
;	pozostawiając stale tryb wielkich lub tryb małych liter
; UWAGA: Zdefiniuj drukTNL na wymaganą wersję końca linii /N:
;	drukTNL EQU 2'/R'	;MacOS (do wersji 9)
;	drukTNL EQU 2'/N'	;Linux, MacOS, Windows (rozumie)
;	drukTNL EQU 2'/R/N'	;Windows, dalekopis
; Argumenty:
;	B7 = aktualny poczet: 0k21=litery, 1k21=figury
;	B2 = adres tekstu w standardowym formacie, 0 na końcu
; Wywołanie:
;	SKS  drukT6		;argumenty w drukTNL,B7,B2
; Wyniki:
;	B7 = aktualny poczet: 0k21=litery, 1k21=figury
;	B2 = adres zera kończącego tekst
;	B1 = -1 = 0c17777
;	A  - zniszczony, reszta odtworzona
; Podprogramy:
;	drukT6A
/*------------------------------------------------------------*/
drukT6	:726 0, *+2, 0	;ślad
#dT6p	NIC  0		..B6	;skok przez B6
;------
	[0c17577] = B6
#dT6a	A  = [B2]		;słowo z pamięci
	SKZ  #dT6b		;powrót gdy słowo zerowe
	SKSB B6,drukT6A		;wydruk słowa
	SKLC B2++,#dT6a..#dT6a	;adres następnego słowa
#dT6b	B6 = [0c17577] ..drukT6
;------ Koniec drukT6  ---------------------------------------*/



/*-----	Podprogram drukowania słowa tekstu T6 z akumulatora --*/
; Argumenty:
;	B7 = aktualny poczet: 0k21=litery, 1k21=figury
;	A  = słowo tekstowe w standardowym formacie 1234567n
;	B1 = liczba n znaków do wydrukowania (tylko drukT6B)
; Wywołanie:
;	SKSB B6,drukT6A		;argumenty w drukTNL,B7,A
;  lub SKSB B6,drukT6B		;argumenty w drukTNL,B7,A,B1
; Wyniki:
;	B7 = aktualny poczet: 0k21=litery, 1k21=figury
;	B1 = -1 = 0c17777
;	A  - zniszczony, reszta odtworzona
; Podprogramy:
;	brak
/*------------------------------------------------------------*/
     AIF ?drukTNL
#dTNL	EQU drukTNL		;zadane NL
     AELSE
#dTNL	EQU 2'/R/N'		;domyślne NL
     AFI

drukT6A	A  = A >>< 22		;pobranie n do B1
	B1 = A & 7
	A  = A >>< 17
drukT6B	SKNLC B1--,#dT6p	;druk B1 znaków i powrót po B6
	A  = A >>< 21		;bit pocztu znaku do skali 21
	[0c17576] = A
	A  = A & 1
	A ^ B7			;czy zmiana pocztu
	SKZ	#dT6j		;nie
	A  = [#dT6k+B7]		;pobranie kodu zmiany pocztu
	WY	6		;i wydrukowanie go
	B7 = A & 1		;nowy poczet
#dT6j	A  = [0c17576] ..#dT6k+2
#dT6k	DS 	(2'/F')k4+(1)k21  ; ABC -> 123
	DS 	(2'/L')k4+(0)k21  ; 123 -> ABC
;
     AIF    #dTNL == 2'/R'	;jeśli jako /N ma być (CR)
	A & [#dT6n]		;gdy /N - konwersja na (CR)
	SKNZ	#dT6n+2
	A  = A + [#dT6n+1] ..#dT6n+2
#dT6n	DS	0b11101k26  (2'/R'-2'/N')k26
     AELIF  #dTNL == 2'/N'	;jeśli /N ma pozostać bez zmiany
				;/N pozostaje jako (LF)
     AELSE ;#dTNL == 2'/R/N'	;domyślnie jako /N jest (CR,LF)
	A & [#dT6n]		;gdy /N - konwersja na (CR,LF)
	SKNZ	#dT6n+2
	A  = [#dT6n+1]		;konwersja /N na /R/N
	WY	6
	A  = [0c17576] ..#dT6n+2
#dT6n	DS	0b11101k26  (2'/R')k4
     AFI
	A  = A >>< 17
	WY	6
	A  = A <<< 5 ..drukT6B
;------ Koniec drukT6A ---------------------------------------*/
	KONIEC
---